home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swags_z.zip / SCREEN.SWG / 0045_GETCHAR routines.pas < prev    next >
Pascal/Delphi Source File  |  1993-11-21  |  1KB  |  44 lines

  1. {
  2. From: GREG ESTABROOKS
  3.  
  4. I was wondering if anybody knew how to capture a character in Turbo
  5. Pascal 6.0 at any x,y location like QuickBasic's SCREEN(x,y).
  6. }
  7.  
  8. FUNCTION GetChar( X,Y :WORD; VAR Attrib:BYTE ) :CHAR;
  9. VAR
  10.    Ofs :WORD;
  11. BEGIN
  12.                         { NOTE: Change the Segment from $B800 }
  13.                         {       to $B000 for MonoChrome.      }
  14.   Ofs := ((Y-1) * 160) + ((X SHL 1) - 1);
  15.   Attrib := MEM[$B800:Ofs];
  16.   GetChar := CHR( MEM[$B800:Ofs-1] );
  17. END;
  18.  
  19. {
  20. From: LOU DUCHEZ
  21. ------------------------------------------------------------------------------}
  22.  
  23. function getvideodata(x, y: byte): char;
  24.  
  25. { "Reads" a character off the video screen. }
  26.  
  27. type  videolocation = record                  { video memory locations }
  28.         videodata: char;                      { character displayed }
  29.         videoattribute: byte;                 { attributes }
  30.         end;
  31.  
  32. var vidptr: ^videolocation;
  33.     monosystem: boolean;
  34.     videosegment: word;
  35.     scrncols:  byte absolute $0040:$004a;
  36.     videomode: byte absolute $0040:$0049;
  37.  
  38. begin
  39.   monosystem := (videomode = 7);
  40.   if monosystem then videosegment := $b000 else videosegment := $b800;
  41.   vidptr := ptr(videosegment, 2*(scrncols*(y - 1) + (x - 1)));
  42.   getvideodata := vidptr^.videodata;
  43.   end;
  44.